home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / pyshared / chardet / charsetgroupprober.py < prev    next >
Text File  |  2006-10-21  |  4KB  |  97 lines

  1. ######################## BEGIN LICENSE BLOCK ########################
  2. # The Original Code is Mozilla Communicator client code.
  3. # The Initial Developer of the Original Code is
  4. # Netscape Communications Corporation.
  5. # Portions created by the Initial Developer are Copyright (C) 1998
  6. # the Initial Developer. All Rights Reserved.
  7. # Contributor(s):
  8. #   Mark Pilgrim - port to Python
  9. #
  10. # This library is free software; you can redistribute it and/or
  11. # modify it under the terms of the GNU Lesser General Public
  12. # License as published by the Free Software Foundation; either
  13. # version 2.1 of the License, or (at your option) any later version.
  14. # This library is distributed in the hope that it will be useful,
  15. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17. # Lesser General Public License for more details.
  18. # You should have received a copy of the GNU Lesser General Public
  19. # License along with this library; if not, write to the Free Software
  20. # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  21. # 02110-1301  USA
  22. ######################### END LICENSE BLOCK #########################
  23.  
  24. import constants, sys
  25. from charsetprober import CharSetProber
  26.  
  27. class CharSetGroupProber(CharSetProber):
  28.     def __init__(self):
  29.         CharSetProber.__init__(self)
  30.         self._mActiveNum = 0
  31.         self._mProbers = []
  32.         self._mBestGuessProber = None
  33.         
  34.     def reset(self):
  35.         CharSetProber.reset(self)
  36.         self._mActiveNum = 0
  37.         for prober in self._mProbers:
  38.             if prober:
  39.                 prober.reset()
  40.                 prober.active = constants.True
  41.                 self._mActiveNum += 1
  42.         self._mBestGuessProber = None
  43.  
  44.     def get_charset_name(self):
  45.         if not self._mBestGuessProber:
  46.             self.get_confidence()
  47.             if not self._mBestGuessProber: return None
  48. #                self._mBestGuessProber = self._mProbers[0]
  49.         return self._mBestGuessProber.get_charset_name()
  50.  
  51.     def feed(self, aBuf):
  52.         for prober in self._mProbers:
  53.             if not prober: continue
  54.             if not prober.active: continue
  55.             st = prober.feed(aBuf)
  56.             if not st: continue
  57.             if st == constants.eFoundIt:
  58.                 self._mBestGuessProber = prober
  59.                 return self.get_state()
  60.             elif st == constants.eNotMe:
  61.                 prober.active = constants.False
  62.                 self._mActiveNum -= 1
  63.                 if self._mActiveNum <= 0:
  64.                     self._mState = constants.eNotMe
  65.                     return self.get_state()
  66.         return self.get_state()
  67.  
  68.     def get_confidence(self):
  69.         st = self.get_state()
  70.         if st == constants.eFoundIt:
  71.             return 0.99
  72.         elif st == constants.eNotMe:
  73.             return 0.01
  74.         bestConf = 0.0
  75.         self._mBestGuessProber = None
  76.         for prober in self._mProbers:
  77.             if not prober: continue
  78.             if not prober.active:
  79.                 if constants._debug:
  80.                     sys.stderr.write(prober.get_charset_name() + ' not active\n')
  81.                 continue
  82.             cf = prober.get_confidence()
  83.             if constants._debug:
  84.                 sys.stderr.write('%s confidence = %s\n' % (prober.get_charset_name(), cf))
  85.             if bestConf < cf:
  86.                 bestConf = cf
  87.                 self._mBestGuessProber = prober
  88.         if not self._mBestGuessProber: return 0.0
  89.         return bestConf
  90. #        else:
  91. #            self._mBestGuessProber = self._mProbers[0]
  92. #            return self._mBestGuessProber.get_confidence()
  93.